package io.github.annyylxyms.gynregistry.service;

import io.github.annyylxyms.gynregistry.model.InstanceMeta;

import java.util.List;
import java.util.Map;

/**
 * Interface of registry service
 */
public interface RegistryService {

    /**
     * 针对某个服务注册一个实例
     * @param service
     * @param instance
     * @return
     */
    InstanceMeta register(String service, InstanceMeta instance);

    InstanceMeta unregister(String service, InstanceMeta instance);

    List<InstanceMeta> getAllInstances(String service);

    // todo 添加一些高级功能
    //刷新service里实例的状态(注意可变参数必须放在最后)
    long Renew(InstanceMeta instance, String... services);

    //获取一个服务当前的版本，当服务下增加或修改了实例，version就会改变
    Long version(String service);

    //提供一组服务版本的变化，一个实例可能有多个服务存在
    Map<String, Long> versions(String... services);
}
